function deepEqual(a, b) {

}


console.log(deepEqual(1, 1)) // => true
console.log(deepEqual(1, 2)) // => false
console.log(deepEqual(1, '1')) // => false
console.log(deepEqual([1,2], [1,2])) // => true
console.log(deepEqual([1, { a: 1, b: 2 }], [1, { a: 1, b: 2 }])) // => true
console.log(deepEqual({ a: 1, b: 2 }, { a: 1, b: 2 })) // => true
console.log(deepEqual({ a: 1, b: 2 }, { a: 1, b: 2, c: 3 })) // => false
console.log(deepEqual({ a: 1, b: [1, 2] }, { a: 1, b: [1, 2] })) // => true


/**
 * 答案
 */
// function deepEqual(a, b) {
//   // TODO: 实现对比方案
//   if(typeof(a) !== typeof(b))
//     return false;
//   let type = typeof(a);
//   if(type == "object") {
//     if((a instanceof Array) !== (b instanceof Array))
//       return false;
//     if(a instanceof Array) {
//       type = "array";
//     }
//   }
//   switch(type) {
//     case "number":
//       return a === b;
//     case "string":
//       return a === b;
//     case "array":
//       if(a.length != b.length) return false;
//       for(let i = 0; i < a.length; i++) {
//         if(!deepEqual(a[i], b[i])) return false;
//       }
//       return true;
//     case "object":
//       if(Object.keys(a).length != Object.keys(b).length) return false;
//       Object.keys(a).forEach(function(index) {
//         if(!deepEqual(a[index], b[index])) return false;
//       });
//       return true;
//   }
// }
